home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
SourceCode
/
DeveloperLabs
/
Lab3
/
TextView.m
< prev
Wrap
Text File
|
1995-06-12
|
2KB
|
84 lines
/*
** TextView.m, implementation of scrolling text stuff for TextLab.
** Copyright 1989 NeXT, Inc. All Rights Reserved.
** Author: Bruce Blumberg, NeXT Developer Support Group
*/
#import <appkit/appkit.h>
#import "TextView.h"
@implementation TextView:View
+newFrame:(const NXRect *)tFrame
{ NXRect rect;
/* EXERCISE #1 *
* Turn this into a subclass of a ScrollView and set *
* the docView of the scrolling view to the text object *
* returned by the -newText: method of TextView. *
* Before you call newText: you will need to determine the *
* size of the text object you want newText: to create for *
* you. It should be the same size of the scrollView less *
* the size of the scrollers. There is a method of *
* ScrollView which will give you this information. Also *
* note that in a ScrollView you do not have to explicitly *
* make the view you are scrolling over (the docView) a *
* subview of the ScrollView. That is done for you when you*
* set the docView of the ScrollView */
/* create view */
self = [super newFrame:tFrame];
theText = [self newText:&bounds];
[self addSubview:theText];
// The following two lines allow the resizing of the view
// to be passed down to the docView (in this case, the text view
// itself).
[[theText superview] setAutoresizeSubviews:YES];
[[theText superview] setAutosizing:NX_HEIGHTSIZABLE | NX_WIDTHSIZABLE];
// Create enclosing window, display it and bring it upfront
[self makeEnclosingWindow:tFrame];
[window makeFirstResponder:theText];
[window setTitle:"Untitled"];
[window display];
[window makeKeyAndOrderFront:self];
[theText setSel:0:0];
return(self);
}
-makeEnclosingWindow:(const NXRect *)r
{
id tWin;
tWin = [Window newContent:r style:NX_TITLEDSTYLE
backing:NX_BUFFERED buttonMask:NX_ALLBUTTONS defer:NO];
[tWin setContentView:self];
[tWin setBackgroundGray:NX_WHITE];
[tWin setFreeWhenClosed:YES];
return self;
}
-newText:(const NXRect *)tF
{
id text = [Text newFrame:tF text:NULL alignment:NX_LEFTALIGNED];
[text setOpaque:YES];
[[[[[text notifyAncestorWhenFrameChanged:YES]
setVertResizable:YES]
setHorizResizable:NO]
setMonoFont:NO]
setDelegate:self];
{ NXSize aSize = {1.0E38,1.0E38};
[text setMinSize:&tF->size];
[text setMaxSize:&aSize];
}
[text setCharFilter:NXEditorFilter];
return text;
}
@end